226.翻转二叉树(递归/Java) | 您所在的位置:网站首页 › 二叉树反转 java › 226.翻转二叉树(递归/Java) |
226.翻转二叉树
题目简述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 题目思路: 1.由题意可知,翻转二叉树实际是将每一个节点的孩子交换位置 2.如果这个节点的孩子均不存在,则说明二叉树翻转完成(若仅存在一个孩子,仍可以翻转,即交换左右孩子) 4.根节点不需要翻转,但要保持根节点的位置不动 5.通过上述步骤可以看到,翻转的所有操作都可归结到一个节点的相关操作,所以可以采用递归的思路 Java代码实现: public TreeNode invertTree(TreeNode root) { invertNode(root); return root; } private void invertNode(TreeNode node) { //如果左右孩子均不存在返回 if (node != null) return; //将左右孩子进行翻转 TreeNode temp = node.right; node.right = node.left; node.left = temp; //对节点的左孩子进行操作 invertNode(node.left); //对节点的右孩子进行操作 invertNode(node.right); } 易错点当仅判断左右孩子是否为空作为递归条件时,很多同学通过 if(node.left == null && node.right == null) return;作为判断结束递归的条件,但当node本身为空时,这会造成空指针,所以当判断左右孩子为空时,可以采用 if(node == null) return;作为返回条件,这样可以有效规避空指针的产生 |
CopyRight 2018-2019 实验室设备网 版权所有 |